classdef Etapa3 < handle
   properties (SetObservable) %propiedades que pueden ver los listeners
   handles;

   fig3;
   fig3zanahoria
   Het;
   Hetelegido;
   bandadeinteres;
   
   cantidad;
   perm;
   ganancias;
   rangos;
   max;
   min;
   
   gananciasselec;
   gananciasaux;
   etapaagraficar;
   
   unidades;
   zeros;
   polos;
   konst;
   
   
   gananciatot;
   
   plantilla;
   end 
   properties %propiedades que no pueden ver los listeners
      
   end 
   methods
       
       function self = Etapa3(self) %constructor
           
           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
           % Initializes GUI
           
           hfig = hgload('etapa3gui.fig'); % load 'GUIDE generated' Figure.
           self.handles = guihandles(hfig); % get figure handles.
           movegui(hfig,'center')   % sets Figure position.
           self.fig3=hfig;
           set(self.fig3,'Visible','off');
           set(self.handles.nasty,'Visible','off');
           set(self.handles.alta,'callback', @self.alta_senial_callback)
           set(self.handles.media,'callback', @self.media_senial_callback) 
           set(self.handles.baja,'callback', @self.baja_senial_callback)
           
           
           set(self.handles.sel_config,'callback', @self.sel_config_callback)
           
           
           imshow('logo.png','Parent',self.handles.logo);
           
           set(self.handles.gananciaactualiza,'callback', @self.gananciaactualiza_callback)
           
           set(self.handles.zoom,'callback', @self.zoom_callback)
           set(self.handles.pan,'callback', @self.pan_callback)
           set(self.handles.grid,'callback', @self.grid_callback)
           set(self.handles.cursor,'callback', @self.cursor_callback)
           set(self.handles.noapretar,'callback', @self.noapretar_callback)
           set(self.handles.configelegida,'callback', @self.etapasel_callback)
           
           
           zoompic = imread('zoom.png');
           set(self.handles.zoom, 'CData', zoompic);
            
           panpic = imread('pan.png');
           set(self.handles.pan, 'CData', panpic);
            
           cursorpic = imread('cursor.png');
           set(self.handles.cursor, 'CData', cursorpic);
            
           gridpic = imread('grid.png');
           set(self.handles.grid, 'CData', gridpic);
           
           
           self.etapaagraficar=1;
           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
           % GUI callbacks
%           set(self.handles.noagrupados_agruparpar,'callback', @self.noagrupados_agruparpar_callback)

       end
       
       
%       function noagrupados_autoagrupar_callback(self, varargin)

    function noapretar_callback(self, varargin)
     
        set(self.handles.nasty,'Visible','on');
        pause(0.1);
        imshow('nasty.png','Parent',self.handles.nasty);
        pause(1);
        set(self.handles.nasty,'Visible','off');
        pause(0.1);
       
    end

    function etapasel_callback(self, varargin)
        self.etapaagraficar=get(self.handles.configelegida,'Value');
        actualizaGraficasEtapa3(self);
        
    
    end



    function zoom_callback(self, varargin)
        zoom;
    end
    function pan_callback(self, varargin)
        pan
    end
    function grid_callback(self, varargin)
        grid
    end
    function cursor_callback(self, varargin)
        datacursormode;
    end
    
    function gananciaactualiza_callback(self, varargin)
        if ~isempty(self.Hetelegido)
            selected=get(self.handles.configelegida,'Value');
            newgan=str2num(get(self.handles.gananciaedit,'String'));
            if isempty(newgan)
                return
            end
            [tipodefiltro orden notch wp qp g wz]=parseTransferencia(self.Hetelegido(selected));
            self.Hetelegido(selected)=self.Hetelegido(selected)*newgan/g;
            [tipodefiltro orden notch wp qp g wz]=parseTransferencia(self.Hetelegido(selected));
            self.Hetelegido(selected)=self.Hetelegido(selected)*newgan/g;
            self.gananciasselec(selected)=newgan;
        
            actualizaDatosPiolasE3(self);
            actualizaGraficasEtapa3(self);
            actualizaListBoxConfigElegida(self);
        end
        
    end

    function sel_config_callback(self, varargin)
        elegido=get(self.handles.configuraciones,'Value');
        
        self.Hetelegido=asigna(self.Het,self.perm(elegido,:),self.ganancias(elegido,:));
        self.gananciasselec=[];
        for k=1:length(self.perm(elegido,:))
           [tipodefiltro orden notch wp qp g wz]=parseTransferencia(self.Hetelegido(k));
           self.gananciasselec(k)=g;
           
           %self.gananciasselec(k)=self.ganancias(elegido,k)*nthroot(10^(self.gananciatot/20),length(self.ganancias(k,:)));
        end
        
        
        
       
        
        
%         for k=1:self.cantidad
%            [self.zeros(k) self.polos(k) self.konst(k)]=zpkdata(self.Hetelegido); 
%         end
%         
        
        
        actualizaDatosPiolasE3(self);
        actualizaGraficasEtapa3(self);
        actualizaListBoxConfigElegida(self);
        
        
    end


   function alta_senial_callback(self, varargin)
       sortE3(self,self.max);
       actualizaListBoxEtapa3(self);
   end
   
   function media_senial_callback(self, varargin)
       sortE3(self,self.rangos);
       actualizaListBoxEtapa3(self);
      end
   
   function baja_senial_callback(self, varargin)
       sortE3(self,1./self.min);
       actualizaListBoxEtapa3(self);
   end
   
   
   
   
   
   
   end
   
   
   
   
   
   
end